define(["jquery"], function ($) {
    var basePath = "assets/data";
    var serversCommon={
        setReqOption:function(params){
            var token=servers.account.dataToken?servers.account.dataToken:$.cookie('infoToken');
            return {
                url:params[0],
                param:params[1],
                successCallback:params[2],
                isLoading:params[3],
                token:token
            }
        }
    };
    var servers = {
        getSendSuccess:function (data) {
            return {success:true,data:data,dataConversion:data}
        },
        getSendError:function (msg) {
            return {success:false,msg:msg}
        }
    };
    servers.base={
        adFormat:function (cb) {
            var self=this;
            if(self.dataAdFormat){
                cb(self.dataAdFormat);
            }else{
                var options=serversCommon.setReqOption([basePath + "/base/adFormat.json", {}, function (res) {
                    self.dataAdFormat=res.success?res.data:[];
                    cb(self.dataAdFormat);
                }]);
                $.ExtAjax.initGetSimple(options);
            }
        },
        os:function (cb) {
            var options=serversCommon.setReqOption([basePath + "/base/os.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        ratio:function (cb) {
            var options=serversCommon.setReqOption([basePath + "/base/ratio.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        imageType:function (cb) {
            var options=serversCommon.setReqOption([basePath + "/base/imageType.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        uploadImg:basePath + "/base/Save.json"
    };
    servers.account = {
        dataInfo:null,
        dataToken:null,
        info:function(cb){
            var self=this;
            if(!$.ExtCommon.isCheckEmpty(self.dataInfo)){
                cb(self.dataInfo)
            }else{
                var options=serversCommon.setReqOption([basePath + "/account/info.json", {}, function(res){
                    self.dataInfo=res.success?self._conversionInfo(res.data):{};
                    cb(self.dataInfo);
                }]);
                $.ExtAjax.initGetSimple(options);
            }
        },
        updateOneMark:function (cb) {
            var self=this;
            var options=serversCommon.setReqOption([basePath + "/account/Save.json", data, function (res) {
                if(res.success &&self.dataInfo){
                    self.dataInfo.isShowFirst=false
                }
                if(cb){cb(res)}
            }]);
            $.ExtAjax.initPostSimple(options);
        },
        login: function (param, cb) {
            var self=this;
            var options=serversCommon.setReqOption([basePath + "/account/login.json", param, function(res){
            //var options=serversCommon.setReqOption([basePath + "/account/loginSaveFail.json", param, function(res){
                if(res.success){
                    var info=self._conversionInfo(res.data);
                    self.dataInfo=info;
                    //todo token 赋值
                    self.dataToken="wo shi token";
                    $.cookie('infoToken', "wo shi tokenCookie");
                    res.dataConversion=info;
                }
                cb(res)
            }]);
            ////todo 请求类型 待修改
            $.ExtAjax.initGetSimple(options);
        },
        logout: function (cb) {
            var self=this;
            var options=serversCommon.setReqOption([basePath + "/account/logout.json", {}, function(res){
                if(res.success){
                    self.dataToken=null;
                    self.dataInfo=null;
                }
                cb(res)
            }]);
            ////todo 请求类型 待修改
            $.ExtAjax.initGetSimple(options);
        },
        check: function (param, cb) {
            var options=serversCommon.setReqOption([basePath + "/account/check.json", param, cb]);
            ////todo 请求类型 待修改
            $.ExtAjax.initGetSimple(options);
        },
        _conversionInfo:function (json) {
            var newJson=$.ExtCommon.getMappingJson(json, {"id":"id","userName":"username"});
            //todo 判断用户是否首次
            newJson.isShowFirst=true;
            return newJson;
        }
    };
    servers.media={
        pageList: function (param,cb) {
            var options=serversCommon.setReqOption([basePath + "/media/ListPage.json", param, cb]);
            $.ExtAjax.initGetPageData(options);
        },
        list:function (cb) {
            var options=serversCommon.setReqOption([basePath + "/media/List.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        info: function (id, cb) {
            var options=serversCommon.setReqOption([basePath + "/media/Info.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        add: function (data, cb) {
            var options=serversCommon.setReqOption([basePath + "/media/Save.json", data, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        update: function (data, cb) {
            var options=serversCommon.setReqOption([basePath + "/media/Save.json", data, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        delete: function (id, cb) {
            var options=serversCommon.setReqOption([basePath + "/media/SaveFail.json", {}, cb]);
            $.ExtAjax.initPostSimple(options);
        }
    };
    servers.adSpace={
        pageList: function (param,cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/ListPage.json", param, cb]);
            $.ExtAjax.initGetPageData(options);
        },
        list:function (cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/List.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        info: function (id, cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/Info.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        add: function (data, cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/Save.json", data, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        update: function (data, cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/Save.json", data, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        delete: function (id, cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/SaveFail.json", {}, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        updateStatus:function (param,cb) {
            var options=serversCommon.setReqOption([basePath + "/adSpace/Save.json", param, cb,false]);
            $.ExtAjax.initPostSimple(options);
        }
    };
    servers.template={
        pageList: function (param,cb) {
            var options=serversCommon.setReqOption([basePath + "/template/ListPage.json", param, cb]);
            $.ExtAjax.initGetPageData(options);
        },
        list:function (param,cb) {
            var options=serversCommon.setReqOption([basePath + "/template/List.json", param, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        info: function (id, cb) {
            var options=serversCommon.setReqOption([basePath + "/template/Info.json", {}, cb]);
            $.ExtAjax.initGetSimple(options);
        },
        add: function (data, cb) {
            var options=serversCommon.setReqOption([basePath + "/template/Save.json", data, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        update: function (data, cb) {
            var options=serversCommon.setReqOption([basePath + "/template/Save.json", data, cb]);
            $.ExtAjax.initPostSimple(options);
        },
        delete: function (id, cb) {
            var options=serversCommon.setReqOption([basePath + "/template/SaveFail.json", {}, cb]);
            $.ExtAjax.initPostSimple(options);
        }
    };
    servers.report={
        list:function (param,cb) {
            var options=serversCommon.setReqOption([basePath + "/report/"+param.type+".json", param, cb]);
            $.ExtAjax.initGetSimple(options);
        }  
    };
    return servers;
});